package(包)一个package对应一个项目,package的信息在Cargo.toml里面定义。crate(木箱、箱子)crate指的是package编译后的输出文件。以Windows为例,可能会产生.exe文件或者.rlib文件。crate有两种类型:executable(可执行的)和library(库)。一个package可以包含0到n个可执行的crate,和0到1个library。如果,想要在一个package里只生成一个可执行的文件,只要写src/main.rs文件就可以了。如果,想要在一个package里只生成一个库文件,只要写src/lib.rs文件就可以了。如果,想要在一
一、代码编写、调试、运行1.rust-analyzer一直以来,Rust官方维护的RLS(RustLanguageServer)都是Rust插件,但是大多数人推荐使用的都是rust-analyzer。rust-analyzer项目始于2017年年底,随着功能越来越强大,如今已经成为Rust编程中不可或缺的一部分。如果你之前使用的是Rust插件,那么可以试一试rust-analyzer,或许你会爱上它。而且,现在rust-analyzer也要加入Rust组织了,这一组织上的变化可能会使rust-analyzer在不就的将来能够成为官方的Rust语言服务器。详见文章 终于!rust-analyze
自从tokio1.0发布以来,rust的异步开发总算大势已定。尽管没达到标准库的速度,依然挡不住大家的热情。看编程排行榜,增加2倍的开发者。既生瑜何生亮,感觉go就是小号的rust。 不废话了。背景:之前用go开发一个边缘网关的小东东,业余时间做了一大半。后来学了rust,打算练手,用rust重新写。在crate中央仓库里找来找去,选择了tokio-modbus。测试中发现用rtu的方式下,如果slave没有发回数据,程序将陷入无限等待中。也没找到如何设置这个超时。串口配置中倒是有个超时设置,不知道有啥用。在tokio-modbus的github上,找到有人提到这个问题。那个解决问题的方式实在
2020年学习rust的时候,web框架一大堆,感觉无所适从。有的框架类似于springboot里注解的方式 使用宏,有的是用函数的方式。随着异步框架tokio地位的稳固,axum是一个不错的选择。axum采用的是函数的方式。其实框架里是写好的验证处理程序的。源码里有基本验证和令牌验证两种方式。原来有的令牌验证,一是字段不能重新定义,二是字段的值分为两部分。如果前端的人不是深究过http协议,估计会骂街。前端提交了用户名和密码后,得到了jwt。后续业务中,将jwt放置到商量好的自定义header里即可。以令牌里只涉及用户ID和过期时间为例定义Claims。#[derive(Debug,Seri
注:此文适合于对rust有一些了解的朋友iced是一个跨平台的GUI库,用于为rust语言程序构建UI界面。想要了解如何构建简单窗口的可以看本系列的第一篇:RustUI开发:使用iced构建UI时,如何在界面显示中文字符本篇是系列第二篇,主要解决一个问题,就是为窗口添加图标icon。注:窗口图标在其他语言中,应该是非常容易实现的,但iced是一个发展中的库,很多方面还不成熟,我在用iced自己的方法测试window图标,花了很多时间,效果还不好,所以特意记录此篇,一来做个记录,方便以后回看,二来给其他有这方面问题的朋友做个参考。我们先来看一下iced中对于窗口参数设置里icon的定义:///T
云计算的类型按服务提供方式分类,云计算可以分为:IaaS(InfrastructureasaService)即基础设施即服务,从IaaS服务提供商获得计算机基础设施服务,包括服务器、存储和网络等服务。PaaS(PlatformasaService)平台即服务,提供各种开发和分发应用的解决方案,比如虚拟中间件服务器、运行时和操作系统。SaaS(SoftwareasaService)软件即服务,基于多租户技术实现,直接提供应用程序。 按云服务的对象分类,可分为3类:1、公有云,面向互联网用户需求,通过开放网络提供云计算服务2、私有云,面向企业内部提供云计算服务3、混合云,兼顾以上两种情况的云计算服
反射的概念反射(Reflection)是Java的一种特性,它可以让程序在运行时获取自身的信息,并且动态地操作类或对象的属性、方法和构造器等。通过反射功能,可以让我们在不知道具体类名的情况下,依然能够实例化对象,调用方法以及设置属性。反射的作用反射的作用有以下几点:运行时探查类的信息:反射允许我们在运行时加载、检查和使用类,甚至可以在运行时获取一个未加载的类。动态创建对象:使用反射可以实现动态地创建对象,而且可以选择该类的任意一个构造函数来创建对象实例。访问或修改私有成员:反射可以访问和修改一个类中私有的字段和方法,即使这些字段和方法是私有的。扩展应用程序的可控性:反射可以提高应用程序的可扩展
目录1、枚举的定义1.1 Option枚举和其相对于空值的优势 2、match控制流结构2.1 匹配Option2.2 匹配是穷尽的2.3 通配模式和_占位符3、iflet简洁控制流1、枚举的定义枚举(enumerations),也被称作 enums。枚举允许你通过列举可能的 成员(variants)来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会探索一个特别有用的枚举,叫做 Option,它代表一个值要么是某个值要么什么都不是。然后会讲到在 match 表达式中用模式匹配,针对不同的枚举值编写相应要执行的代码。最后会介绍 iflet,另一个简
前言在之前的用Rust搭建ReactServerComponents的Web服务器我们利用了Axum构建了RSC的服务器。也算是用Rust在构建Web服务上的小试牛刀。虽然说Axum在RustWeb应用中一枝独秀。但是,市面上也有很多不同的解决方案。所以,今天我们就比较一些 Rust 框架,突出它们各自的优势和缺点,以帮助我们为项目做出明智的决策。没有对比就没有选择,我们只有在真正的了解各个框架的优缺点和适应场景,在以后的开发中才能有的放矢的放心选择。文本中,我们会介绍很多Rust框架。并且会按照如下的受欢迎程度的顺序来讲。图片好了,天不早了,干点正事哇。我们能所学到的知识点AxumActix
一个优秀的项目,错误处理的优雅性是至关重要的,而rust,anyhowcreat是绕不过去的一个,今天我们来研究下,怎么使用它,帮助我们写出更优雅的代码关注vxgolang技术实验室,获取更多golang、rust好文Part1一、anyhowanyhow::Error是这个crate中最重要的结构体,它是动态错误类型的包装器,能从所有实现了std::error::Error+Send+Sync+'static的错误转换而来,也能转换成Box,它有以下特点:anyhow::Error要求包裹的错误必须是Send+Sync+'static;anyhow::Error保证backtrace是可用的